package constants

import "strings"

// GetDefaultActiveConfigFile
// Title 			GetDefaultActiveConfigFile
// Description 		获取默认系统环境配置文件路径
// Author      		alittlexincan@163.com       			2024/07/22 11:36
// Update  			alittlexincan@163.com 					2024/07/22 11:36
// Param    		active string							当前环境
// Return    		string     								默认配置文件路径
func GetDefaultActiveConfigFile(active string) string {
	return strings.Replace(DefaultActiveConfigFilePattern, "*", active, 1)
}

// ProviderType
// Title 			ProviderType
// Description 		配置类型: 用于系统配置中, 配置中心、注册中心、缓存、对象关系映射、数据库等类型映射
// Author  			alittlexincan@163.com 					2024/07/22 11:36
// Update  			alittlexincan@163.com 					2024/07/22 11:36
type ProviderType string

const (

	// 配置中心类型: 默认[none], 支持: [none、nacos], none: 采用本地配置

	ProviderConfigNone  ProviderType = "none"  // 配置中心: 无
	ProviderConfigNacos ProviderType = "nacos" // 配置中心: nacos

	// 注册中心类型: 默认[none], 支持: [none、nacos、consul], none: 不注册

	ProviderRegistryNone   ProviderType = "none"   // 注册中心: 无
	ProviderRegistryNacos  ProviderType = "nacos"  // 注册中心: nacos
	ProviderRegistryConsul ProviderType = "consul" // 注册中心: consul

	// 缓存类型: 默认[none], 支持: [none、 redis, memcached], none: 不配置缓存

	ProviderCacheNone      ProviderType = "none"      // 缓存: 无
	ProviderCacheRedis     ProviderType = "redis"     // 缓存: redis
	ProviderCacheMemcached ProviderType = "memcached" // 缓存: memcached

	// 对象关系映射类型: 默认[none], 支持: [none、 gorm, xorm, sqlx], none: 不配置对象关系映射

	ProviderOrmNone ProviderType = "none" // 对象关系映射: 无
	ProviderOrmGorm ProviderType = "gorm" // 对象关系映射: gorm
	ProviderOrmXorm ProviderType = "xorm" // 对象关系映射: xorm
	ProviderOrmSqlx ProviderType = "sqlx" // 对象关系映射: sqlx

	// 数据库类型: 默认[mysql], 支持: [mysql, postgresql, sqlite, sqlserver, oracle], none: 不配置数据库

	ProviderDatabaseNone       ProviderType = "none"       // 数据库: 无
	ProviderDatabaseMysql      ProviderType = "mysql"      // 数据库: mysql
	ProviderDatabasePostgresql ProviderType = "postgresql" // 数据库: postgresql
)

// Value
// Title 			Value
// Description 		配置类型转换成字符串
// Author  			alittlexincan@163.com 					2024/07/22 11:36
// Update  			alittlexincan@163.com 					2024/07/22 11:36
// Return    		string     								字符串
func (provider ProviderType) Value() string {
	return string(provider)
}

// Convert
// Title 			Convert
// Description 		字符串转换成配置类型
// Author  			alittlexincan@163.com 					2024/07/22 11:36
// Update  			alittlexincan@163.com 					2024/07/22 11:36
// Param    		value string							字符串
// Return    		ProviderType     						配置类型
func (provider ProviderType) Convert(value string) ProviderType {
	return ProviderType(value)
}
